# 演示可视化需求1:折线图开发
import json
from pyecharts.charts import Line
from pyecharts.render.engine import render
from pyecharts.options import TitleOpts, LabelOpts

# 处理数据
f_us = open("美国.txt","r",encoding="UTF-8")
us_data = f_us.read()       # 读取文件中的全部内容

f_jp = open("日本.txt","r",encoding="UTF-8")
jp_data = f_jp.read()

f_in = open("印度.txt","r",encoding="UTF-8")
in_data = f_in.read()

# 去掉合 JSON 规范的开头
us_data = us_data.replace("jsonp_1629344292311_69436(","")
us_data = us_data[:-2]

jp_data = jp_data.replace("jsonp_1629350871167_29498(","")
jp_data = jp_data[:-2]

in_data = in_data.replace("jsonp_1629350745930_63180(","")
in_data = in_data[:-2]

# JSON 转 python 字典
us_dict = json.loads(us_data)

jp_dict = json.loads(jp_data)

in_dict = json.loads(in_data)

# 获取 trend key
us_trend_data = us_dict['data'][0]['trend']

jp_trend_data = jp_dict['data'][0]['trend']

in_trend_data = in_dict['data'][0]['trend']

# 获取日期数据，用于 x 轴，取2020年(到314下标结束)
us_x_data = us_trend_data['updateDate'][:314]

jp_x_data = jp_trend_data['updateDate'][:314]

in_x_data = in_trend_data['updateDate'][:314]

# 获取确认数据，用于 y 轴，取2020年(到315下标结束)
us_y_data = us_trend_data['list'][0]['data'][:314]

jp_y_data = jp_trend_data['list'][0]['data'][:314]

in_y_data = in_trend_data['list'][0]['data'][:314]

# 生成图表
line = Line()

# 添加 x 轴数据—— x 轴公用，只需要添加一个就可以了
line.add_xaxis(us_x_data)

# 添加 y 轴数据
line.add_yaxis("美国确诊人数",us_y_data,label_opts=LabelOpts(is_show=False))

line.add_yaxis("日本确诊人数",jp_y_data,label_opts=LabelOpts(is_show=False))

line.add_yaxis("印度确诊人数",in_y_data,label_opts=LabelOpts(is_show=False))

# 调用 render 方法生成图表
line.set_global_opts(
    title_opts = TitleOpts(title = "2020年美日英三国确诊人数对比折线图",pos_left="center",pos_bottom="1%")

)
line.render("2020年美日英三国确诊人数对比折线图.html")

# 关闭文件对象
f_us.close()
f_jp.close()
f_in.close()
